<?php
/**
 * 管理后台登录管理类
 * ============================================================================
 * * 版权所有 度拉拉 * *
 * 网站地址: http://www.dlltrip.com
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * Author By: 倪宗锋
 * PhpStorm LoginService.php
 * Create By 2017/6/13 14:32 $
 */

namespace common\service\admin;

use common\models\AdmUser;
use common\util\Util;
use yii\web\Controller;

class LoginService extends Controller
{
    public static $uid = null;

    public static function checkLogin()
    {
        $cookies = $_COOKIE;
        /**如果用户未登录**/
        if (empty($cookies['adm_access_token'])) {
            return Util::returnArrEr('用户未登录!', '', '', 'LOGIN-100001');
        } else {
            //将token进行解密
            $uid = Util::authCode($cookies['adm_access_token'], 'DECODE');//解密出来就是用户的ID
            /**获取用户token并校验token的正确性**/
            $cache = \Yii::$app->cache;
            $tokenKey = 'ADM_LOGIN_' . YII_ENV . '_' . $uid;
            $tokenInfo = $cache->get($tokenKey);
            /**校验access_token是否一致*/
            if (empty($tokenInfo['access_token']) || $tokenInfo['access_token'] != $cookies['adm_access_token']) {
                return Util::returnArrEr('用户未登录!', '', '', 'LOGIN-100001');
            }
            /**校验user_agent是否一致*/
            if (empty($tokenInfo['agent']) || $tokenInfo['agent'] != $_SERVER['HTTP_USER_AGENT']) {
                return Util::returnArrEr('用户未登录!', '', '', 'LOGIN-100001');
            }
            $cache->set($tokenKey, $tokenInfo, 2592000);
            static::$uid = $uid;
        }
        return Util::returnArrSu();
    }

    /**
     * Des:设置用户登录状态
     * Name: setLogin
     * @param $uid
     * @return array
     * @author 倪宗锋
     */
    public static function setLogin($uid)
    {
        $admUser = new AdmUser();
        $getUserInfo = $admUser->getUserInfo($uid);
        if (empty($getUserInfo['u_name'])) {
            return Util::returnArrEr('不存在的用户！');
        }
        $cache = \Yii::$app->cache;
        static::$uid = $uid;//设置当前登录用户ID
        $access_token = Util::authCode($uid, 'ENCODE');//access_token 用于前后端传递使用
        $tokenInfo = [
            'access_token' => $access_token,
            'agent' => $_SERVER['HTTP_USER_AGENT'],
        ];
        $tokenKey = 'ADM_LOGIN_' . YII_ENV . '_' . $uid;
        $cache->set($tokenKey, $tokenInfo, 2592000);
        /**设置cookie*/
        setcookie('adm_access_token', $access_token, time() + 3600000, "/");
        setcookie('uid', $uid, time() + 3600000, "/");//能保存最好，不能保存没关系 只是日志会使用到此ID来识别操作用户
        return Util::returnArrSu('', ['access_token' => $access_token]);
    }

}